package Homework;
//会员业务操作类

import java.nio.Buffer;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Scanner;

import org.omg.PortableInterceptor.IORInterceptor;

public class MemberDao {
	//会员集合
	private List<Member> memberList=new ArrayList<Member>();
	//扫描器
	private Scanner scanner=new Scanner(System.in);
	
	public void start() {
		//可以循环输入
		while(true) {
			System.out.println("欢迎光临超市会员管理系统！");
			System.out.println("1.积分查询\n2.积分累加\n3.积分兑换\n4.修改密码\n5.注册会员\n6.退出系统");
			System.out.print("请选择：");
			int choice=scanner.nextInt();
			switch (choice) {
			case 1:
				System.out.println("您选择了积分查询！");
				//判断会员是否存在，如果存在就返回该会员，不存在就返回null，调用hasMember方法
				Member member=hasMember();
				if(member!=null) {
					System.out.println(member.toString());
				}else {
					System.out.println("会员卡号或密码输入错误！");
				}
				continue;
			case 2:
				System.out.println("您选择了积分累加！");
				continue;
			case 3:
				System.out.println("您选择了积分兑换！");
				continue;
			case 4:
				System.out.println("您选择了修改密码！");
				continue;
			case 5:
				System.out.println("您选择了注册会员！");
				//调用注册会员方法
				registerCard();
				
				continue;
			case 6:
				System.out.println("您选择了退出系统！");
				System.out.println("欢迎您下次光临！");
				break;
			default:
				System.out.println("输入错误，请重新输入！");
				continue;
			}
		}
	}

	//注册会员方法
	private void registerCard() {
		//创建一个会员对象
		Member memberReg = new Member();
		//提示用户输入姓名   手机号   密码，然后生成会员卡号
		System.out.print("请输入您的姓名：");
		memberReg.setName(scanner.next());
		System.out.print("请输入您的手机号：");
		memberReg.setPhoneNum(scanner.next());
		System.out.print("请设置6位数字密码：");
		int passwordInt=scanner.nextInt();
		String password=Integer.toString(passwordInt);
		System.out.print("请再次输入密码：");
		int passwordInt2=scanner.nextInt();
		String password2=Integer.toString(passwordInt2);
		if(password.length()!=6) {
			System.out.println("密码格式错误，请重新输入！");
			return;
		}else {
			//判断两次输入的密码是否相同
			if(password2.equals(password)) {
				//将用户设置的密码传入该用户
				memberReg.setPassword(password);
				//默认会员初始积分为100
				memberReg.setScore(100);
				//获取会员注册时间   yyyy-MM-dd 
				memberReg.setRegisterDate(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
				//判断该会员是否为第一个会员，若是第一个就生成卡号00000001，否则就在原有的卡号基础上+1
				if(memberList.size()==0) {
					memberReg.setCardId("00000001");
				}else {
					//获取会员集合中的最后一个卡号
					String cardIdMaxOldStr=memberList.get(memberList.size()-1).getCardId();
					//将获得字符串会员号转换为int类型，+1后表示该用户应分得的会员卡号
					int cardIdInt = Integer.parseInt(cardIdMaxOldStr)+1;
					//再将int类型的会员卡号转换为字符串类型
					String cardId = Integer.toString(cardIdInt);
					//判断该卡号之前需要添加几个0
					if(cardId.length()!=8) {
						int addLength=8-cardId.length();
						StringBuffer buffer = new StringBuffer();
						for(int i=0;i<addLength;i++) {
							buffer.append("0");
						}
						//先追加0，再在后面追加之前生成的卡号
						buffer.append(cardId);
						cardId=buffer.toString();//将stringBuffer中的字符串转换为String
					}
					//将生成的会员卡号添加到该会员对象
					memberReg.setCardId(cardId);
				}
				//将给会员添加到会员集合
				memberList.add(memberReg);
				System.out.println("会员注册成功！");
				System.out.println("您的会员卡号："+memberReg.getCardId());
				//System.out.println(memberList.size());
			}else {
				System.out.println("两次输入的密码不一致，请重新输入！");
				return;
			}
		}
	}

	//判断是否存在会员
	private Member hasMember() {
		//先判断会员集合是否为空
		if(memberList.size()==0) {
			System.out.println("暂无会员信息，请先注册！");
		}else {
			//在有会员的情况下提示用户输入会员卡号和密码
			System.out.print("请输入您的会员卡号：");
			String cardId=scanner.next();
			System.out.print("请输入密码：");
			String password=scanner.next();
			//创建一个会员对象
			Member member = new Member();
			//将该会员输入的卡号和密码传入
			member.setCardId(cardId);
			member.setPassword(password);
			//判断用户输入的会员卡号和密码是否有与之相对应的会员存在---密码不区分大小写
			//循环遍历会员集合
			for (Member memberIt : memberList) {
				if(member.getCardId().equals(memberIt.getCardId()) && member.getPassword().equalsIgnoreCase(memberIt.getPassword())) {
					return memberIt;
				}
			}
		}
		return null;
	}
}
